class Celsius:
    def __init__(self, temperature = 0):
        self.temperature = temperature

    def to_fahrenheit(self):
        # return (self.temperature * 1.8) + 32
        return (self.temperature * 1.8) + 32

    # 通过Celsius的实例访问temperature属性 就要去调用get_temperature方法
    @property
    def temperature(self):
        print("获得的值")
        return self._temperature

    # 通过Celsius的实例修改temperature属性 就要去调用set_temperature方法
    @temperature.setter
    def temperature(self, value):
        if value < -273:
            raise ValueError("零下273度是不可能的")
        print("设定值")
        self._temperature = value




certifi = Celsius(-170)
print(certifi.temperature)
certifi.temperature = -260
print(certifi.temperature)


# 封装的目的与优势
# 数据隐藏：保护对象内部状态，防止意外修改。
# 接口清晰：暴露必要方法，隐藏复杂实现细节。
# 降低耦合：内部实现变化不影响外部调用。
# 数据验证：通过 setter 确保数据合法性。